This invention is in the Storage for Computer's domain and addresses especially High Performances and very High Availability (HA) RAID disk sub-systems. There are already on the market some High Availability disk-subsystems. One problem is, with the arrival of the new information technologies like Internet Web servers, e-commerce, Storage Area Networks (SANs), etc. the requests on High performances and specially High Availability features will dramatically increase including requests about a high level of performances even after failure has occurred.
If we exclude from the discussion high range RAID disk subsystems based on old mainframe technologies with a poor level of High Availability, the majority of the HA RAID sub-systems are based on a 2 RAID disk controller configuration. These two controllers are in the "active - active" mode (both are operational together and contribute for the overall performance of the sub-system). The High Availability features are supported by the use of redundant components such as:
Redundant power supplies, PA1 Redundant power cords, PA1 Redundant cooling, PA1 Redundant controllers, PA1 Redundant connections, PA1 RAID redundancy at disks level, PA1 The complete load has to be supported by one controller instead of 2 (100% increase), PA1 The write cache could not be used without data integrity risks because it cannot be mirrored, so the performances in write operations are hugely degraded.
For performances point of view, each RAID controller has to support the I/Os that it receives from its attached host(s). To increase performance, RAID disk controllers have a data cache used for Read and Write operations.
For Read operations, Read-ahead features or specific cache algorithms in certain applications increase the performances of the RAID disk subsystem by reducing access time to the data when the data sought is found in the data cache instead of requiring a disk access.
In Write operations, write cache is used to mask the physical operation of writing on the disk drives. The Write operation can be very load and time consuming. In RAID-5, for example, one Write operation generates two Read and two Write operations on two different disk drives. This explains write cache is an important feature to use in order to provide reasonable response times to the host(s). When the data to be written are in a disk controller's write cache, the disk controller can send a message to the host indicating that the operation is completed. It is then the responsibility of the disk subsystem to guarantee that the data is written successfully to the disks.
Because High Availability is linked with a very high level of data integrity, it is important to protect the contents of the write cache against a failure of the cache, the disk controller, or a power outage. This problem can be solved by mirroring the write cache content of each disk controller in the other one. In this case, the termination message to the host is sent only when the data to be written is in the two write caches. In case of a disk controller or a cache failure, the second disk controller achieves the write operation on the disk drives. For data exchange between the two disk controllers, the drive interfaces, or a specific link between the two disk controllers are used. With these features, when a disk controller fails (or the path to access to this controller), the access to the data is insured by the second disk controller. For a performance point of view, the situation is not as good:
These performances issues will be seen as unacceptable by more and more disk controller users using their storage subsystems in non-stop activities like e-commerce, web servers, etc. where a significant degradation of performance can have a very negative impact on their business.